﻿using Newtonsoft.Json; 
using SqlSugar; 

namespace XW.Core
{
    /// <summary>
    /// 实体接口
    /// </summary>
    public abstract class IEntity { 
    
    
    }
    /// <summary>
    /// 框架实体基类Id
    /// </summary>
    public abstract class EntityBaseId: IEntity
    {
		/// <summary>
		/// 雪花Id
		/// </summary>
		[JsonConverter(typeof(LongJsonConverter))]
		[SugarColumn(ColumnDescription = "Id", IsPrimaryKey = true, IsIdentity = false)]
        public virtual long Id { get; set; }
    }

    /// <summary>
    /// 框架实体基类
    /// </summary>
    public class EntityBase: EntityBaseId
    {
        /// <summary>
        /// 创建时间
        /// </summary>
        [SugarColumn(ColumnDescription = "创建时间", IsOnlyIgnoreUpdate = true)]
        public virtual DateTime? CreateTime { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        [SugarColumn(ColumnDescription = "更新时间", IsOnlyIgnoreInsert = true)]
        public virtual DateTime? UpdateTime { get; set; }

        /// <summary>
        /// 创建者Id
        /// </summary>
        [SugarColumn(ColumnDescription = "创建者Id", IsOnlyIgnoreUpdate = true)]
        public virtual long? CreateUserId { get; set; }

        /// <summary>
        /// 修改者Id
        /// </summary>
        [SugarColumn(ColumnDescription = "修改者Id", IsOnlyIgnoreInsert = true)]
        public virtual long? UpdateUserId { get; set; }

        /// <summary>
        /// 软删除
        /// </summary>
        [SugarColumn(ColumnDescription = "软删除")]
        public virtual bool IsDelete { get; set; } = false;
    }
}
